<!-- 商品管理 -->
<template>
  <div class="sku-warp">
    <!-- sku列表展示表格 -->
    <el-table :data="skuInfoLsit" border style="width: 100%">
      <el-table-column type="index" label="序号" />
      <el-table-column prop="skuName" label="名字" />
      <el-table-column prop="skuDesc" label="描述" />
      <el-table-column label="图片" width="100px">
        <template slot-scope="scope">
          <el-image :src="scope.row.skuDefaultImg" fit="cover" style="width: 100px; height: 100px;" />
        </template>
      </el-table-column>
      <el-table-column prop="price" label="价格" width="80px" />
      <el-table-column prop="weight" label="重量" width="80px" />
      <el-table-column label="操作">
        <template slot-scope="scope">
          <el-button-group>
            <el-button v-show="scope.row.isSale == 0" type="primary" size="mini" @click="onSale(scope.row)">上架
            </el-button>
            <el-button v-show="scope.row.isSale == 1" type="info" size="mini" :disabled="true">已上架</el-button>
            <el-button v-show="scope.row.isSale == 1" type="primary" size="mini" @click="cancelSale(scope.row)">下架
            </el-button>
            <!-- 修改 -->
            <el-button type="warning" icon="el-icon-edit" size="mini" />
            <!-- 信息 -->
            <el-button type="info" icon="el-icon-warning-outline" size="mini" @click="getSkuBy(scope.row)" />
            <!-- 删除 -->
            <el-button type="danger" icon="el-icon-delete" size="mini" @click="deleteSku(scope.row)" />
          </el-button-group>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页 -->
    <el-pagination
      style="text-align: center;margin-top: 20px;"
      :current-page="currentPage"
      :page-size="pageSize"
      layout="prev, pager, next, jumper,->,total, sizes"
      :total="total"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
    <!-- sku展示抽屉 -->
    <el-drawer title="我嵌套了表格!" :visible.sync="skudrawer" direction="rtl" size="50%">
      <el-table :data="gridData">
        <el-table-column property="date" label="日期" width="150" />
        <el-table-column property="name" label="姓名" width="200" />
        <el-table-column property="address" label="地址" />
      </el-table>
    </el-drawer>
  </div>
</template>

<script>
// 这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
// 例如：import 《组件名称》 from '《组件路径》';

export default {
  name: 'Sku',
  // import引入的组件需要注入到对象中才能使用
  components: {},
  data() {
    // 这里存放数据
    return {
      total: 0, // 总条数
      pageSize: 10, // 展示条数
      currentPage: 1, // 当前页数
      // sku列表数据
      skuInfoLsit: [],
      // sku展示抽屉
      skudrawer: false
    }
  },
  // 监听属性 类似于data概念
  computed: {},
  // 监控data中的数据变化
  watch: {},
  // 生命周期 - 创建完成（可以访问当前this实例）
  created() {

  },
  // 生命周期 - 挂载完成（可以访问DOM元素）
  mounted() {
    this.getSkuList()
  },
  beforeCreate() { }, // 生命周期 - 创建之前
  beforeMount() { }, // 生命周期 - 挂载之前
  beforeUpdate() { }, // 生命周期 - 更新之前
  updated() { }, // 生命周期 - 更新之后
  beforeDestroy() { }, // 生命周期 - 销毁之前
  destroyed() { }, // 生命周期 - 销毁完成
  activated() { },
  // 方法集合
  methods: {
    // 获取sku列表数据
    async getSkuList() {
      const reslut = await this.$API.sku.getSkuList(this.currentPage, this.pageSize)
      if (reslut.code === 200) {
        this.skuInfoLsit = reslut.data.records
        this.total = reslut.data.total
      }
    },
    // 选择每页展示条数
    handleSizeChange(val) {
      this.pageSize = val
      this.getSkuList()
    },
    // 选择当前页数
    handleCurrentChange(val) {
      this.currentPage = val
      this.getSkuList()
    },
    // 上架
    onSale(row) {
      this.$API.sku.onSale(row.id).then(reslut => {
        if (reslut.code === 200) {
          this.$message.success('上架成功')
          this.getSkuList()
        }
      })
    },
    // 下架
    cancelSale(row) {
      this.$API.sku.cancelSale(row.id).then(reslut => {
        if (reslut.code === 200) {
          this.$message.success('下架成功')
          this.getSkuList()
        }
      })
    },
    // 删除sku
    deleteSku(row) {
      this.$confirm('此操作将永久删除该sku, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.$API.sku.deleteSku(row.id).then(reslut => {
          if (reslut.code === 200) {
            this.$message.success('删除成功')
            this.getSkuList()
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        })
      })
    },
    // 获取单独sku信息
    getSkuBy(row) {
      this.$API.sku.reqSkuById(row.id).then(reslut => {
        if (reslut.code === 200) {
          this.$message.success('获取成功')
          this.skudrawer = true
          console.log(reslut.data)
        }
      })
    }
  }
}
</script>
<style lang='scss' scoped>
//@import url(); 引入公共css类
</style>
